package com.wg.core.script;

import java.util.Objects;

/**
 * 脚本元数据容器（持有脚本类名和实例，线程安全）
 *
 * @author 少爷123
 */
public class ScriptBean {
    /**
     * 脚本全类名（非空）
     */
    private volatile String name;
    /**
     * 脚本实例（非空）
     */
    private volatile IScript script;

    /**
     * 设置脚本类名（非空）
     *
     * @param name 脚本全类名
     * @return 当前实例（链式调用）
     * @throws NullPointerException 若name为null
     */
    public ScriptBean setName(String name) {
        this.name = Objects.requireNonNull(name, "script name cannot be null");
        return this;
    }

    public String getName() {
        return name;
    }

    /**
     * 设置脚本实例（非空）
     *
     * @param script 脚本实例（需实现IScript）
     * @return 当前实例（链式调用）
     * @throws NullPointerException 若script为null
     */
    public ScriptBean setScript(IScript script) {
        this.script = Objects.requireNonNull(script, "script instance cannot be null");
        return this;
    }

    public IScript getScript() {
        return script;
    }
}